﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProyectoSelva.Validate;
using ProyectoSelva.Daos;
using EntitiesAndMappings.Entities;
using ProyectoSelva.Util;
using ProyectoSelva.Dtos;

namespace ProyectoSelva.Forms.Consultas
{
    public partial class FrmConsultaRenovaciones : Form, IValidateForm
    {
        private bool _IsValid;

        public static FrmConsultaRenovaciones Activo { set; get; }



        public FrmConsultaRenovaciones()
        {
            InitializeComponent();
            _IsValid = true;
            if (Activo == null)
            {
                Activo = this;
            }
            dGridResultado.AutoGenerateColumns = false;
        }

        private void FrmConsultaRenovaciones_Load(object sender, EventArgs e)
        {
            ActionExecutor.Execute(this, delegate
            {
            var empresaDao = new EntidadGenericaDAO<Empresa>();
            var proyectoDAO = new EntidadGenericaDAO<Proyecto>(); 
            var loteDAO = new EntidadGenericaDAO<Lote>(); 
            var tipoCargoDAO = new EntidadGenericaDAO<TipoCargo>();  
            var statusContratoDAO = new EntidadGenericaDAO<StatusContrato>(); 
            var motivoLiquidacionDAO = new EntidadGenericaDAO<MotivoLiquidacion>(); 
                    
            cmbEmpresa.DataSource = FormUtils.AddFirst(empresaDao.ListarActivos(), new Empresa { Codigo = "", Descripcion = "Todas" });
            cmbProyecto.DataSource = FormUtils.AddFirst(proyectoDAO.ListarActivos(), new Proyecto { Codigo = "", Descripcion = "Todos" });
            cmbLote.DataSource = FormUtils.AddFirst(loteDAO.ListarActivos(), new Lote{ Codigo = "", Descripcion = "Todos" });
            cmbCargo.DataSource = FormUtils.AddFirst(tipoCargoDAO.ListarActivos(), new TipoCargo{ Codigo = "", Descripcion = "Todos" });
            cmbEstatus.DataSource = FormUtils.AddFirst(statusContratoDAO.ListarActivos(), new StatusContrato{ Codigo = "", Descripcion = "Todos" });
            cmbMotivoLiquidacion.DataSource = FormUtils.AddFirst(motivoLiquidacionDAO.ListarActivos(), new MotivoLiquidacion{ Codigo = "", Descripcion = "Todos" });
            });
        }
        private void FrmConsultaRenovaciones_FormClosing(object sender, FormClosingEventArgs e)
        {
            Activo = null;
        }

        public void Invalid()
        {
            _IsValid = false;
        }

        public bool IsValid()
        {
            return _IsValid;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            ActionExecutor.Execute(this, delegate
            {

                _IsValid = true;
                errorProvider.Clear();

                ConsultaRenovacionesParams parametros = new ConsultaRenovacionesParams();


                parametros.Apellidos = txtApellidos.Text.Trim();
                parametros.Nombres = txtNombres.Text.Trim();
                
                parametros.IdEmpresa = ((Empresa)cmbEmpresa.SelectedItem).Id;
                parametros.IdProyecto = ((Proyecto)cmbProyecto.SelectedItem).Id;
                parametros.IdLote = ((Lote)cmbLote.SelectedItem).Id;
                parametros.IdCargo = ((TipoCargo)cmbCargo.SelectedItem).Id;
                parametros.IdStatusContrato = ((StatusContrato)cmbEstatus.SelectedItem).Id;
                parametros.IdMotivoLiquidacion = ((MotivoLiquidacion)cmbMotivoLiquidacion.SelectedItem).Id;

                parametros.ConsiderarFechaFinContrato = checkConsiderarFechaFinContrato.Checked;
                if (parametros.ConsiderarFechaFinContrato)
                {
                    parametros.FechaFinContratoDesde = datFechaFinContratoDesde.Value.Date;
                    parametros.FechaFinContratoHasta = datFechaFinContratoHasta.Value.Date;
                }
                

                ActionExecutor.Execute(this, delegate
                {
                    dGridResultado.DataSource =
                        ConsultasDAO.consultaDeRenovaciones(parametros);
                });
          

            });
        }

        private void tStripButtonExportarAExcel_Click(object sender, EventArgs e)
        {
            if (dGridResultado.Rows.Count > 0)
            {
                ActionExecutor.Execute(this, delegate
                {
                    ExcelUtils.ExportarGridAExcel(dGridResultado);
                });

            }
        }

     

    

     
       
    }
}
